package com.example.demo.xcel;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;

import static com.example.demo.xcel.EasyEcellMain.users;
import static com.example.demo.xcel.EasyEcellMain.users2;
import static com.example.demo.xcel.TUser.negative;
import static com.example.demo.xcel.TUser.perinumAble;

/**
 * @author FENGYU
 * @description
 * @date 2023/8/31 15:15
 */
// 编写监听器，继承 AnalysisEventListener 类并指定读取java对象
public class EasyExcelListener extends AnalysisEventListener<TUser> {
    // 逐行读取 excel 信息
    public void invoke(TUser tUser, AnalysisContext analysisContext) {
        if (perinumAble(tUser.getPeriodNum()) && tUser.getReleaseAmount() != null && negative(tUser.getReleaseAmount()) < 0) {

            users2.add(tUser);

            // EasyEcellMain.map.put(tUser.getXprojectCode() + "_" + tUser.getUserCode() + "_" + tUser.getPeriodNum() , tUser);
        } else {
            users.add(tUser);
        }


        // 此处可以执行插入操作
    }

    // excel 读取完毕触发
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        System.out.println("finsh");
    }
}

// 当多个类型需要导入时，觉得创建多个监听器麻烦可以使用泛型监听器
class CommonEasyExcelListener<T> extends AnalysisEventListener<T> {
    public void invoke(T t, AnalysisContext analysisContext) {
        System.out.println(t);
    }

    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        System.out.println("finsh");
    }
}
